Econométrie Appliquée

Des 🍏 sur !

Auteur·rice·s
Affiliation

Corentin Ducloux

Guillaume Devant

Date de publication

02/02/2024

Code
makestars <- function(pvalues) {
    return(
        dplyr::case_when(
            pvalues < 0.001 ~ "$***$",
            pvalues < 0.05 ~ "$**$",
            pvalues < 0.1 ~ "$*$",
            .default = ""
        )
    )
}


gtgazer <- function(model, n_coef = 4, coefnames, description, title, bg_color) {
    if (class(model) == "translogEst") {
        coefficients <- summary(model)$coefTable[1:n_coef, 1]
        std_values <- summary(model)$coefTable[1:n_coef, 2]
        pvalues <- summary(model)$coefTable[1:n_coef, 4]
        signif <- makestars(pvalues)
        r2 <- round(summary(model)$r2, 3)
        adj_r2 <- round(summary(model)$r2bar, 3)
        n <- summary(model)$nObs
        dep_variable <- summary(model)$yName
    } else if (class(model) == "quadFuncEst") {
        coefficients <- summary(model$est)$coefficients[, 1]
        std_values <- summary(model$est)$coefficients[, 2]
        pvalues <- summary(model$est)$coefficients[, 4]
        signif <- makestars(pvalues)
        r2 <- round(model$r2, 3)
        adj_r2 <- round(model$r2bar, 3)
        n <- model$nObs
        dep_variable <- model$yName
    }

    coefnames <- coefnames
    description <- description
    reg_results <- data.frame(cbind(coefnames, description, coefficients, std_values, pvalues, signif)) |>
        tibble() |>
        mutate(across(c(coefficients, std_values, pvalues), as.numeric))

    table <- reg_results |>
        gt(rowname_col = "coefnames") |>
        cols_label(
            description = md("**Description**"),
            coefficients = md("**Coefficients**"),
            std_values = md("**Ecart Type**"),
            pvalues = md("**Pvalues**"),
            signif = md("**Significativité**")
        ) |>
        fmt_markdown(columns = c(coefnames, signif, description)) |>
        fmt_number(columns = c(coefficients, pvalues), decimals = 3) |>
        fmt(columns = std_values, fns = function(std) {
            paste("+/-", round(std, 3))
        }) |>
        tab_footnote(footnote = md(sprintf("*Observations* : %s", n))) |>
        tab_footnote(footnote = md("***")) |>
        tab_footnote(footnote = md(glue::glue("$R^2=$ {r2}"))) |>
        tab_footnote(footnote = md(glue::glue("$R^2_{{adj}}=$ {adj_r2}"))) |>
        tab_header(
            title = md(title),
            subtitle = md(glue::glue("Variable dépendante : {dep_variable}"))
        ) |>
        tab_options(
            table.background.color = bg_color
        )

    return(table)
}

1 Imports et configuration

Note

Tout au long de ce projet, nous utiliserons l’approche tidy développée par Wickham (2014) plutôt que l’approche base R pour manipuler nos données.

Code
library(ggplot2)
library(dplyr)
library(readxl)
library(micEcon)
library(stargazer)
library(gt)
library(tibble)
library(knitr)
library(plotly)
library(patchwork)
library(showtext)
library(FactoMineR)
library(factoextra)
library(ggtext)
library(micEconIndex)
Code
bg_color <- "#FCFCFC"
alpha <- 0.7
Code
theme_set(theme_minimal())
thematic::thematic_on(bg = "#FCFCFC", fg = "black", accent = "purple", font = "PT Sans")

2 Description des données

Le jeu de données appleProdFr86 utilisé dans le papier d’économétrie de Ivaldi et al. (1996) comprend des données transversales de production de 140 producteurs de pommes français datant de l’année 1986.

Code
apples <- read_excel("data/appleProdFr86.xlsx")
Descriptif des colonnes
Colonnes Description
vCap Coûts associés au capital (foncier compris).
vLab Coûts associés au travail (y compris la rémunération du travail familial non rémunéré).
vMat Coûts des matières intermédiaires (plantations, engrais, pesticides, carburant, etc).
qApples Indice de quantité des pommes produites.
qOtherOut Indice de quantité de tous les autres outputs.
qOut Indice de quantité de toute la production \(\Rightarrow 580000 \cdot (\text{qApples} + \text{qOtherOut})\)
pCap Indice des prix du capital.
pLab Indice des prix du travail.
pMat Indice des prix des matières intermédiaires.
pOut Indice des prix de la production globale.
adv Distingue les producteurs qui sont conseillés par des laboratoires d’agronomie.

2.1 Tableau descriptif

Ce tableau descriptif retrace les 10 premières observations et l’ensemble des variables associées dans le dataset.

Code
apples |>
    head(n = 10) |>
    gt() |>
    tab_header(
        title = md("**Producteurs de pommes 🍎**"),
        subtitle = md("*140 producteurs* 🇫🇷 *(1986)*")
    ) |>
    tab_source_note(
        source_note = "Source: Ivaldi et al. (1996)"
    ) |>
    tab_spanner(
        label = "Costs",
        columns = c("vCap", "vLab", "vMat")
    ) |>
    tab_spanner(
        label = "Price Index",
        columns = c("pCap", "pLab", "pMat", "pOut")
    ) |>
    tab_spanner(
        label = "Quantity Index",
        columns = c("qApples", "qOtherOut", "qOut")
    ) |>
    tab_style(
        style = list(
            cell_fill(color = "lavenderblush")
        ),
        location = cells_body(columns = c(vCap, vLab, vMat))
    ) |>
    tab_style(
        style = list(
            cell_fill(color = "ivory")
        ),
        location = cells_body(columns = c(qApples, qOtherOut, qOut))
    ) |>
    tab_style(
        style = list(
            cell_fill(color = "aliceblue")
        ),
        location = cells_body(columns = c(pCap, pLab, pMat, pOut))
    ) |>
    fmt_number(suffixing = TRUE, n_sigfi = 2) |>
    text_case_match(
        "1.0" ~ fontawesome::fa("check"),
        "0" ~ fontawesome::fa("xmark"),
        .locations = cells_body(columns = adv)
    ) |>
    tab_options(
        table.background.color = bg_color
    )
Producteurs de pommes 🍎
140 producteurs 🇫🇷 (1986)
N Costs Quantity Index Price Index adv qCap qLab qMat
vCap vLab vMat qApples qOtherOut qOut pCap pLab pMat pOut
1 220K 320K 300K 1.4 0.98 1.4M 2.6 0.90 8.9 0.66 84K 360K 34K
2 130K 190K 260K 0.86 1.1 1.1M 3.3 0.75 6.4 0.72 40K 250K 41K
3 81K 130K 91K 3.3 0.40 2.2M 2.2 0.96 3.7 0.94 37K 140K 24K
4 34K 110K 60K 0.44 0.44 510K 1.6 1.3 3.2 0.60 21K 83K 19K
5 39K 84K 100K 1.8 0.015 1.1M 0.87 0.94 7.2 0.83 45K 89K 14K
6 120K 520K 580K 8.5 0.43 5.2M 1.0 0.96 9.6 1.4 120K 550K 60K
7 89K 170K 340K 4.1 3.3 4.3M 0.98 1.0 7.8 1.3 91K 170K 44K
8 92K 200K 130K 2.2 1.1 1.9M 1.0 0.92 5.0 0.62 89K 220K 25K
9 66K 180K 190K 1.8 2.6 2.5M 2.5 1.0 5.6 1.9 27K 180K 34K
10 94K 140K 82K 1.6 0.45 1.2M 0.98 0.64 5.6 0.49 95K 220K 15K
Source: Ivaldi et al. (1996)

3 Statistiques descriptives

3.1 Productivité moyenne des facteurs de production

La productivité moyenne (\(AP =\) Average Product) consiste à diviser la quantité totale d’output par la quantité totale de facteur utilisé (input) dans le processus de production.

Imaginons que les unités d’output sont des tonnes. Pour chaque input, cela revient en fait à expliquer combien de tonnes sont produites par unité de capital, de travail et de matières intermédiaires en 1986 pour chaque producteur de pommes.

Nous obtenons alors respectivement :

  • \(AP_{Cap} = \frac{q_{Out}}{q_{Cap}}\)

  • \(AP_{Lab} = \frac{q_{Out}}{q_{Lab}}\)

  • \(AP_{Mat} = \frac{q_{Out}}{q_{Mat}}\)

Code
apples <- apples |> mutate(
    AP_Cap = qOut / qCap,
    AP_Lab = qOut / qLab,
    AP_Mat = qOut / qMat
)
Code
tibble_AP_Cap <- apples |>
    summarise(min = min(AP_Cap), mean = mean(AP_Cap), max = max(AP_Cap), std = sd(AP_Cap)) |>
    add_column(type = "$AP_{Cap}$", .before = "min")
tibble_AP_Lab <- apples |>
    summarise(min = min(AP_Lab), mean = mean(AP_Lab), max = max(AP_Lab), std = sd(AP_Lab)) |>
    add_column(type = "$AP_{Lab}$", .before = "min")
tibble_AP_Mat <- apples |>
    summarise(min = min(AP_Mat), mean = mean(AP_Mat), max = max(AP_Mat), std = sd(AP_Mat)) |>
    add_column(type = "$AP_{Mat}$", .before = "min")

AP_table <- bind_rows(tibble_AP_Cap, tibble_AP_Lab, tibble_AP_Mat)

AP_table |>
    gt() |>
    fmt_markdown(columns = type) |>
    fmt_number(columns = c(-type)) |>
    tab_header(
        title = md("**Productivité Moyenne par Facteur 📋**"),
        subtitle = md("*Capital --- Travail --- Matériaux*")
    )
Productivité Moyenne par Facteur 📋
Capital — Travail — Matériaux
type min mean max std

\(AP_{Cap}\)

1.45 32.64 152.87 29.25

\(AP_{Lab}\)

0.86 10.21 25.63 6.20

\(AP_{Mat}\)

8.22 90.64 301.43 60.43

Ce tableau, en plus des visualisations qui vont suivre, permet d’établir que les productivités moyennes par facteur sont très différentes selon les producteurs. De plus, on s’aperçoit aussi qu’investir dans un facteur particulier peut être plus intéressant qu’un autre.

C’est particulièrement vrai pour le facteur Mat avec une productivité moyenne minimale de 8.22 unités d’output pour une unité de matériaux et jusqu’à 301.43 unités d’output pour une unité de matériaux.

Code
apples |>
    ggplot() +
    aes(x = AP_Cap) +
    geom_histogram(binwidth = 1.25, fill = "darkgreen", alpha = alpha) +
    labs(title = "Productivité Moyenne du Capital", subtitle = "Pour une unité de capital, combien d'unités d'output sont produits ?", x = "", y = "Fréquence")

Code
apples |>
    ggplot() +
    aes(x = AP_Lab) +
    geom_histogram(binwidth = 0.75, fill = "orange", alpha = alpha) +
    labs(title = "Productivité Moyenne du Travail", subtitle = "Pour une unité de travail, combien d'unités d'output sont produits ?", x = "", y = "Fréquence")

Code
apples |>
    ggplot() +
    aes(x = AP_Mat) +
    geom_histogram(binwidth = 1.5, fill = "darkorchid", alpha = alpha) +
    labs(title = "Productivité Moyenne des matériaux", subtitle = "Pour une unité de matériaux, combien d'unités d'output sont produits ?", x = "", y = "Fréquence")

3.2 Corrélations entre les quantités des 3 facteurs de production

Code
apples |>
    select(qCap, qLab, qMat) |>
    cor() |>
    round(2) |>
    data.frame() |>
    gt() |>
    tab_header("Matrice de corrélation")
Matrice de corrélation
qCap qLab qMat
1.00 0.59 0.66
0.59 1.00 0.79
0.66 0.79 1.00

3.3 Corrélations entre les productivités moyennes

Essayons de comprendre comment les productivités moyennes individuelles sont corrélées :

Code
apples |>
    select(starts_with("AP")) |>
    cor() |>
    round(2) |>
    data.frame() |>
    gt() |>
    tab_header("Matrice de corrélation")
Matrice de corrélation
AP_Cap AP_Lab AP_Mat
1.00 0.51 0.46
0.51 1.00 0.73
0.46 0.73 1.00
Code
CL <- apples |>
    ggplot() +
    aes(x = AP_Cap, y = AP_Lab) +
    geom_point(colour = "slategray", alpha = alpha)
ML <- apples |>
    ggplot() +
    aes(x = AP_Mat, y = AP_Lab) +
    geom_point(colour = "gray", alpha = alpha)
CM <- apples |>
    ggplot() +
    aes(x = AP_Cap, y = AP_Mat) +
    geom_point(colour = "gray21", alpha = alpha)

prod_plots <- (CL + ML) / CM

prod_plots + plot_annotation(
    title = "Croisement des productivités moyennes",
    subtitle = "Quelles sont les relations existantes entre les différentes productivités moyennes ?",
    caption = "Auteurs : @Corentin DUCLOUX, @Guillaume DEVANT, 2024 "
)

Code
QC <- apples |>
    ggplot() +
    aes(y = qOut, x = AP_Cap) +
    geom_point(colour = "darkgreen", alpha = alpha) +
    labs(y = "")
QL <- apples |>
    ggplot() +
    aes(y = qOut, x = AP_Lab) +
    geom_point(colour = "orange", alpha = alpha) +
    labs(y = "")
QM <- apples |>
    ggplot() +
    aes(y = qOut, x = AP_Mat) +
    geom_point(colour = "darkorchid", alpha = alpha) +
    labs(y = "")

qOut_prod_plots <- (QC + QL) / QM

qOut_prod_plots + plot_annotation(
    title = "Productivité moyenne par rapport à l'output total",
    subtitle = "Quelles sont les relations existantes entre les productivités moyennes des inputs et de l'output ?",
    caption = "Auteurs : @Corentin DUCLOUX, @Guillaume DEVANT, 2024 "
)

3.4 Paasche ou Laspeyres ou Fisher

Les productivités moyennes nous donnent une indication facteur par facteur, mais elles ne nous donnent pas nécessairement d’information globale. Dans ce cadre, on peut alors se demander comment agréger des quantités avec une règle ad-hoc en un indice synthétique.

3 Indices principaux existent

Indice de Paasche

\[ \text{Paasche}_{index} = \frac{(v_{Cap} + v_{Lab} + v_{Mat})}{{\bar{q}_{Cap}}\cdot p_{Cap} + \bar{q}_{Lab}\cdot p_{Lab} + \bar{q}_{Mat} \cdot p_{Mat}} \]

Indice de Laspeyres

\[ \text{Laspeyres}_{index} = \frac{(q_{Cap} \cdot \bar{p}_{Cap} + q_{Lab} \cdot \bar{p}_{Lab} + q_{Mat} \cdot \bar{p}_{Mat})}{(\bar{q}_{Cap}\cdot \bar{p}_{Cap}+\bar{q}_{Lab}\cdot \bar{p}_{Lab}+\bar{q}_{Mat}\cdot \bar{p}_{Mat})} \]

Indice de Fisher

\[ \text{Fisher}_{index} = \sqrt{\text{Paasche}_{index} \cdot \text{Laspeyres}_{index}} \]

De plus, la fonction quantityIndex du package micEconIndex a l’intérêt de facilement intégrer les calculs de chaque indice.

Code
apples <- apples |> mutate(
    L_Index = quantityIndex(
        prices = c("pCap", "pLab", "pMat"),
        quantities = c("qCap", "qLab", "qMat"),
        data = apples,
        method = "Laspeyres"
    ),
    P_Index = quantityIndex(
        prices = c("pCap", "pLab", "pMat"),
        quantities = c("qCap", "qLab", "qMat"),
        data = apples,
        method = "Paasche"
    ),
    F_Index = quantityIndex(
        prices = c("pCap", "pLab", "pMat"),
        quantities = c("qCap", "qLab", "qMat"),
        data = apples,
        method = "Fisher"
    )
)

3.5 Indice de productivité globale des facteurs

  • Nous avons choisi en tant qu’indice de productivité globale des facteurs l’indice de Fisher, étant donné que c’est une moyenne géométrique de l’indice de Paasche et de celui de Laspeyres.
Code
apples |>
    ggplot() +
    aes(x = F_Index) +
    geom_histogram(binwidth = 0.25, fill = "darkred", alpha = 0.7) +
    labs(title = "Productivité globale (Indice de Fisher)", x = "Valeur de l'indice", y = "Fréquence")

Code
apples |>
    ggplot() +
    aes(y = qOut, x = F_Index) +
    geom_point(colour = "darkorchid", alpha = alpha) +
    labs(title = "Relation entre l'indice de productivité globale des facteurs et l'output", y = "")

Code
apples <- apples |> mutate(
    adv_chr = case_when(
        adv == 0 ~ "No advice",
        adv == 1 ~ "Advice",
    )
)

apples |>
    ggplot() +
    aes(y = F_Index, x = adv_chr, fill = adv_chr) +
    geom_boxplot() +
    labs(title = "Productivité globale en fonction du conseil ou non d'un laboratoire", x = "", y = "") +
    theme(legend.position = "None")

Code
apples_grouped <- apples |>
    select(adv_chr, F_Index) |>
    group_by(adv_chr) |>
    summarise(mean = mean(F_Index))

mean_advice <- apples_grouped |>
    slice(1) |>
    pull()

mean_no_advice <- apples_grouped |>
    slice(2) |>
    pull()
  • En moyenne, il n’y a pas de différence de productivité globale lorsque le producteur est conseillé. La productivité moyenne avec conseil est 0.95 et la productivité moyenne sans conseil est 1.

On peut aussi s’assurer que les moyennes sont significativement différentes en faisant un test de Student bilatéral :

\[ \begin{cases} H_0:\mu_{advice} =\mu_{no\_advice}\\ H_1:\mu_{advice} \neq\mu_{no\_advice} \end{cases} \]

Code
advice <- apples |>
    select(adv_chr, F_Index) |>
    filter(adv_chr == "Advice") |>
    pull()

no_advice <- apples |>
    select(adv_chr, F_Index) |>
    filter(adv_chr == "No advice") |>
    pull()

t_test <- t.test(advice, no_advice, var.equal = F)
pval_t_test <- t_test$p.value

\(\Rightarrow\) Au risque \(\alpha = 5\%\), la \(p-value =\) 0.64 \(> 0.05\), on conserve donc l’hypothèse nulle \(H_0\).

4 Analyse exploratoire

L’ACP permet de constater qu’il y a une opposition entre le prix du capital et la quantité de capital, ce qui est économiquement trivial. De plus on observe un fort lien entre le prix du capital et le prix des outputs.

Code
# apples_acp <- apples[-c(96, 129), -c(1, 16:20)]
# acp <- PCA(apples_acp, graph = FALSE)

# fviz_pca_biplot(acp,
#    repel = TRUE,
#    title = "ACP - Biplot",
#    label = "var",
#    col.var = "royalblue",
#    col.ind = "orange",
#    axes = c(1, 2)
# )
Code
# https://r-charts.com/distribution/histogram-density-ggplot2/
apples |>
    ggplot(aes(x = log(qOut))) +
    geom_histogram(aes(y = ..density..),
        alpha = 0.6,
        bins = 25,
        fill = "royalblue",
        color = "royalblue"
    ) +
    labs(
        x = "log()",
        y = "Fréquence"
    ) +
    theme(plot.title = element_markdown(face = "bold", size = 15)) +
    ggtitle("Densité <span style='color:royalblue'>log(qOut)</span> vs. <span style='color:darkred'>loi normale</span>") +
    geom_density(
        color = "royalblue",
        linewidth = 1
    ) +
    stat_function(
        fun = dnorm,
        args = list(
            mean = mean(log(apples$qOut)),
            sd = sd(log(apples$qOut))
        ),
        color = "darkred",
        linewidth = 1
    )
Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.

Le test de normalité confirme statistiquement le fait que les données log(qOut) suivent une distribution normale (p.value > 0.05)

Code
shapiro.test(log(apples$qOut))

    Shapiro-Wilk normality test

data:  log(apples$qOut)
W = 0.98429, p-value = 0.1094

5 Fonction de production linéaire

Forme de la fonction

\[ q_i = \alpha + \sum_{k=1}^3\beta_k x_{ik} + ε_i \]

  • La fonction de production linéaire dans notre cas s’écrit donc sous la forme :

\[ q_{Out} = \alpha + \beta_1 q_{Cap} + \beta_2 q_{Lab} + \beta_3 q_{Mat} + ε_i \]

On a pu constater un lien indéniable entre la quantité produite (qOut) et les productivités moyennes. On peut alors légitimement penser qu’il y a une relation entre la quantité produite et les quantités des facteurs de production. On peut effectuer une régression linéaire pour observer cette relation.

La relation linéaire est significative entre qOut et les variables explicatives qMat et qLab. Le \(R^2\), supérieur à 0.78, démontre la bonne qualité de la régression. De ce modèle on peut dire que la quantité produite dépend principalement de la quanité de travail et de matière première engagé.

Code
reg_qOut_AP <- lm(qOut ~ qMat + qLab + qCap, data = apples)
stargazer(reg_qOut_AP, type = "text")

===============================================
                        Dependent variable:    
                    ---------------------------
                               qOut            
-----------------------------------------------
qMat                         46.668***         
                             (11.234)          
                                               
qLab                         11.831***         
                              (1.272)          
                                               
qCap                           1.788           
                              (1.995)          
                                               
Constant                 -1,615,979.000***     
                           (231,771.700)       
                                               
-----------------------------------------------
Observations                    140            
R2                             0.787           
Adjusted R2                    0.782           
Residual Std. Error  1,540,737.000 (df = 136)  
F Statistic          167.318*** (df = 3; 136)  
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

6 Fonction Cobb-Douglas

Forme de la fonction

\[ q_i = A \prod_{k=1}^3 x_{ik}^{a_k}ε_i \]

\[ q_{Out} = A\cdot q_{Cap}^\alpha \cdot q_{Lab}^\beta \cdot q_{Mat}^\gamma \cdot ε_i \]

Dans le cadre de cette étude comparative, nous avons 3 inputs :

  • qCap \(\Rightarrow\) la quantité de capital
  • qLab \(\Rightarrow\) la quantité de travail
  • qMat \(\Rightarrow\) la quantité de matériaux

Nous obtenons donc la forme suivante :

Avec \(A, \alpha, \beta, \gamma \Rightarrow\) 4 paramètres à estimer.

On peut facilement linéariser la fonction, dès lors on obtient :

\[ \ln(q_{out}) = \ln(A) + \alpha \cdot \ln(q_{Cap}) + \beta \cdot \ln(q_{Lab}) + \gamma \cdot \ln(q_{Mat}) + \ln{(ε_i)} \]

Allen Elasticity of Substitution (AES)

\(\sigma_{\{\text{qCap, qLab, qMat}\}} = 1\)

Rappel : Si la fonction de production est Cobb-Douglas, alors on a normalement \(\hat\alpha + \hat\beta + \hat\gamma = 1\)

On peut tester cette hypothèse :

\[ \begin{cases} H_0 : \alpha + \beta + \gamma = 1\\ H_1 : \alpha + \beta + \gamma \neq 1\\ \end{cases} \]

  • Les entreprises les plus grosses sont les plus productives.
Code
# Estime une fonction de production Cobb Douglas avec l'argument linear
cd_prod <- translogEst(
    "qOut",
    c("qCap", "qLab", "qMat"),
    apples,
    linear = TRUE
)

# elasticities(cd_prod)
# elasticities(quad_prod)
Code
gtgazer(
    cd_prod,
    n_coef = 4,
    coefnames = c("$A$", "$\\alpha$", "$\\beta$", "$\\gamma$"),
    description = c(
        "- Constante du modèle",
        "- Coefficient associé à la variable `qCap`",
        "- Coefficient associé à la variable `qLab`",
        "- Coefficient associé à la variable `qMat`"
    ),
    title = "**Fonction de production Cobb-Douglas**",
    bg_color = bg_color
)
Fonction de production Cobb-Douglas
Variable dépendante : qOut
Description Coefficients Ecart Type Pvalues Significativité

\(A\)

  • Constante du modèle
−2.064 +/- 1.313 0.118

\(\alpha\)

  • Coefficient associé à la variable qCap
0.163 +/- 0.087 0.064

\(*\)

\(\beta\)

  • Coefficient associé à la variable qLab
0.676 +/- 0.154 0.000

\(***\)

\(\gamma\)

  • Coefficient associé à la variable qMat
0.627 +/- 0.126 0.000

\(***\)

Observations : 140

\(R^2=\) 0.594
\(R^2_{adj}=\) 0.585
Code
summary(cd_prod$est)

Call:
lm(formula = as.formula(estFormula), data = estData)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.67239 -0.28024  0.00667  0.47834  1.30115 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -2.06377    1.31259  -1.572   0.1182    
a_1          0.16303    0.08721   1.869   0.0637 .  
a_2          0.67622    0.15430   4.383 2.33e-05 ***
a_3          0.62720    0.12587   4.983 1.87e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.656 on 136 degrees of freedom
Multiple R-squared:  0.5943,    Adjusted R-squared:  0.5854 
F-statistic: 66.41 on 3 and 136 DF,  p-value: < 2.2e-16

7 Fonction de production quadratique

Forme de la fonction

\[ q_i = \alpha + \sum_{k=1}^3\beta_k x_{ik} + \frac{1}{2}\sum_{l=1}^3\sum_{k=1}^3 \beta_{kl}x_{ik}x_{il} + ε_i \]

\[ \begin{gathered}q_{Out}​=α+β_1​q_{Cap}​+β_2​q_{Lab}​+β_3​q_{Mat}\\ ​+\frac{1}{2}​(β_{11}​q^2_{Cap}​+β_{22}​q^2_{Lab}​+β_{33}​q^2_{Mat})\\ ​+\frac{1}{2}​(2β_{12}​q_{Cap}​q_{Lab}​+2β_{13}​q_{Cap}​q_{Mat}​+2β_{23}​q_{Lab}​q_{Mat}​)+ε_i​ \end{gathered} \]

  • \(3^2 = 9\) coefficients à estimer !
Code
quad_prod <- quadFuncEst(
    "qOut",
    c("qCap", "qLab", "qMat"),
    apples
)
Code
gtgazer(
    quad_prod,
    n_coef = 9,
    coefnames = c("$A$", "$\\beta_1$", "$\\beta_2$", "$\\beta_3$", "$\\beta_{11}$", "$\\beta_{12}$", "$\\beta_{13}$", "$\\beta_{22}$", "$\\beta_{23}$", "$\\beta_{33}$"),
    description = c(
        "- Constante du modèle",
        "- Coefficient associé à la variable `qCap`",
        "- Coefficient associé à la variable `qLab`",
        "- Coefficient associé à la variable `qMat`",
        "- Coefficient associé à la variable `qCap²`",
        "- Coefficient associé à la variable `qCap×qLab`",
        "- Coefficient associé à la variable `qCap×qMat`",
        "- Coefficient associé à la variable `qLab²`",
        "- Coefficient associé à la variable `qLab×qMat`",
        "- Coefficient associé à la variable `qMat²`"
    ),
    title = "**Fonction de production quadratique**",
    bg_color = bg_color
)
Fonction de production quadratique
Variable dépendante : qOut
Description Coefficients Ecart Type Pvalues Significativité

\(A\)

  • Constante du modèle
−291,113.132 +/- 361461.083 0.422

\(\beta_1\)

  • Coefficient associé à la variable qCap
5.270 +/- 4.403 0.234

\(\beta_2\)

  • Coefficient associé à la variable qLab
6.077 +/- 3.185 0.059

\(*\)

\(\beta_3\)

  • Coefficient associé à la variable qMat
14.303 +/- 24.057 0.553

\(\beta_{11}\)

  • Coefficient associé à la variable qCap²
0.000 +/- 0 0.176

\(\beta_{12}\)

  • Coefficient associé à la variable qCap×qLab
0.000 +/- 0 0.041

\(**\)

\(\beta_{13}\)

  • Coefficient associé à la variable qCap×qMat
0.000 +/- 0 0.778

\(\beta_{22}\)

  • Coefficient associé à la variable qLab²
0.000 +/- 0 0.141

\(\beta_{23}\)

  • Coefficient associé à la variable qLab×qMat
0.000 +/- 0 0.000

\(***\)

\(\beta_{33}\)

  • Coefficient associé à la variable qMat²
−0.002 +/- 0.001 0.036

\(**\)

Observations : 140

\(R^2=\) 0.845
\(R^2_{adj}=\) 0.834
Code
summary(quad_prod$est)

Call:
lm(formula = as.formula(estFormula), data = estData)

Residuals:
     Min       1Q   Median       3Q      Max 
-3928802  -695518  -186123   545509  4474143 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -2.911e+05  3.615e+05  -0.805 0.422072    
a_1          5.270e+00  4.403e+00   1.197 0.233532    
a_2          6.077e+00  3.185e+00   1.908 0.058581 .  
a_3          1.430e+01  2.406e+01   0.595 0.553168    
b_1_1        5.032e-05  3.699e-05   1.360 0.176039    
b_1_2       -3.097e-05  1.498e-05  -2.067 0.040763 *  
b_1_3       -4.160e-05  1.474e-04  -0.282 0.778206    
b_2_2       -3.084e-05  2.081e-05  -1.482 0.140671    
b_2_3        4.011e-04  1.112e-04   3.608 0.000439 ***
b_3_3       -1.896e-03  8.951e-04  -2.118 0.036106 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1344000 on 130 degrees of freedom
Multiple R-squared:  0.8449,    Adjusted R-squared:  0.8342 
F-statistic: 78.68 on 9 and 130 DF,  p-value: < 2.2e-16

8 Fonction de production Translog

Forme de la fonction

\[ \begin{gathered} ln(q_i) = \alpha + \sum_{k=1}^3\beta_kln(x_{ik}) \\ + \frac{1}{2}\sum_{l=1}^3\sum_{k=1}^3 \beta_{kl}ln(x_{ik})ln(x_{il}) + ε_i \end{gathered} \]

Code
translog_prod <- translogEst(
    "qOut",
    c("qCap", "qLab", "qMat"),
    apples
)
Code
summary(translog_prod)
Estimated Translog function with 140 observations.
       Estimate Std. Error t value Pr(>|t|)  
a_0   -4.145812  21.359450 -0.1941  0.84640  
a_1   -2.306835   2.288291 -1.0081  0.31528  
a_2    1.993284   4.566243  0.4365  0.66318  
a_3    2.231700   3.763344  0.5930  0.55420  
b_1_1 -0.025734   0.208339 -0.1235  0.90189  
b_1_2  0.561944   0.291199  1.9298  0.05582 .
b_1_3 -0.409965   0.235342 -1.7420  0.08387 .
b_2_2 -1.163639   0.679429 -1.7127  0.08916 .
b_2_3  0.657928   0.427502  1.5390  0.12623  
b_3_3 -0.503680   0.434983 -1.1579  0.24902  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
R-squared: 0.6295696     Adjusted R-squared: 0.6039244 

9 Fonction de coût Cobb Douglass

Forme de la fonction

\[ c_i = A \prod_{k=1}^{3} p_{ik}^{\alpha_k}q_i^{\alpha_y} \epsilon_i \]

Code
apples$cost <- apples$vCap + apples$vLab + apples$vMat
Code
cobb_cost <- translogCostEst(
  cName = "cost",
  yName = "qOut",
  pName = c("pCap", "pLab", "pMat"),
  apples, homPrice = FALSE,
  linear = TRUE
)
Code
summary(cobb_cost$est)

Call:
lm(formula = as.formula(estFormula), data = estData)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77663 -0.23243 -0.00031  0.24439  0.74339 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.75383    0.40673  16.605  < 2e-16 ***
a_1          0.37341    0.03072  12.154  < 2e-16 ***
a_2          0.07437    0.04878   1.525  0.12969    
a_3          0.46486    0.14694   3.164  0.00193 ** 
a_4          0.48642    0.08112   5.996 1.74e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3395 on 135 degrees of freedom
Multiple R-squared:  0.6884,    Adjusted R-squared:  0.6792 
F-statistic: 74.56 on 4 and 135 DF,  p-value: < 2.2e-16

10 Fonction de coût Cobb Douglass de court terme

Forme de la fonction

\[ c_i = A x_{i3}^{\alpha_3}\prod_{k=1}^{2} p_{ik}^{\alpha_k}q_i^{\alpha_y} \epsilon_i \]

Code
cobb_cost_ct <- translogCostEst(
  cName = "cost",
  yName = "qOut",
  pName = c("pLab", "pMat"),
  fNames = "pCap",
  apples, homPrice = FALSE,
  linear = TRUE
)
Code
summary(cobb_cost_ct$est)

Call:
lm(formula = as.formula(estFormula), data = estData)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77663 -0.23243 -0.00031  0.24439  0.74339 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.75383    0.40673  16.605  < 2e-16 ***
a_1          0.37341    0.03072  12.154  < 2e-16 ***
a_2          0.46486    0.14694   3.164  0.00193 ** 
a_3          0.48642    0.08112   5.996 1.74e-08 ***
a_4          0.07437    0.04878   1.525  0.12969    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3395 on 135 degrees of freedom
Multiple R-squared:  0.6884,    Adjusted R-squared:  0.6792 
F-statistic: 74.56 on 4 and 135 DF,  p-value: < 2.2e-16

11 Fonction de coût Translog

Forme de la fonction

\[ \begin{gathered}ln(c_i) = \alpha + \sum_{k=1}^3 \beta_k ln(p_{ik}) + \alpha_qln(q_i) \\ +\frac{1}{2}\sum_{l=1}^3\sum_{k=1}^3\beta_{kl}ln(p_{ik})ln(p_{il})\frac{1}{2}\alpha_{q}(ln(q_i))^2 \\ +\frac{1}{2}\sum_{k=1}^3\alpha_{kq}ln(p_{ik})ln(q_i)+\epsilon_i \end{gathered} \]

Code
translog_cost <- translogCostEst(
  cName = "cost",
  yName = "qOut",
  pName = c("pCap", "pLab", "pMat"),
  apples, homPrice = FALSE
)
Code
summary(translog_cost$est)

Call:
lm(formula = as.formula(estFormula), data = estData)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.73251 -0.18718  0.02001  0.15447  0.82858 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 25.383429   3.511353   7.229 4.26e-11 ***
a_1         -2.040079   0.510905  -3.993 0.000111 ***
a_2          0.198813   0.537885   0.370 0.712291    
a_3         -0.024792   2.232126  -0.011 0.991156    
a_4         -1.244914   1.201129  -1.036 0.301992    
b_1_1        0.164075   0.041078   3.994 0.000110 ***
b_1_2       -0.028090   0.042844  -0.656 0.513259    
b_1_3        0.007533   0.171134   0.044 0.964959    
b_1_4        0.048794   0.092266   0.529 0.597849    
b_2_2       -0.095173   0.105158  -0.905 0.367182    
b_2_3       -0.746199   0.244445  -3.053 0.002772 ** 
b_2_4        0.182268   0.130463   1.397 0.164865    
b_3_3       -0.503168   0.943390  -0.533 0.594730    
b_3_4        0.139429   0.433408   0.322 0.748215    
b_4_4        0.529021   0.337680   1.567 0.119728    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3043 on 125 degrees of freedom
Multiple R-squared:  0.7682,    Adjusted R-squared:  0.7423 
F-statistic: 29.59 on 14 and 125 DF,  p-value: < 2.2e-16

12 Others

Code
apples <- apples |> mutate(cost = vCap + vLab + vMat)
  • Avec la fonction de cout on trouve 2.7 – à vérifier

\(\Rightarrow\) Estimer des fonctions de cout, les rendements d’échelle, estimer la fonction CES, la leontieff généralisée, calculer le profit des producteurs, lien entre efficacité, optimalité, vérifier hétéroscédasticité, modèles SFA et DEA potentiellement.

La translog ayant bcp plus de paramètres, ce ne sera pas forcément la bonne forme fonctionnelle !

Etudier les substitutions entre les facteurs ? Comment faire ? Car la Cobb Douglas ne permet pas de le faire.

Code
cobbDouglasCalc(c("qCap", "qLab", "qMat"), apples, coef(cd_prod)[1:4], coefCov = NULL, dataLogged = FALSE)
         1          2          3          4          5          6          7 
 3211442.9  2484348.9  1198934.2   659255.2   657608.3  6440150.6  2289560.6 
         8          9         10         11         12         13         14 
 1941829.7  1643085.0  1393628.8  1065518.4  2532062.5  1142644.8  1990393.7 
        15         16         17         18         19         20         21 
 1804586.9  2486696.5   623801.8  4674844.6   652055.8  1602756.5  3585652.8 
        22         23         24         25         26         27         28 
 3105133.1  1962299.4  1894850.1  1730990.1  2028057.2  1236923.3  3120162.0 
        29         30         31         32         33         34         35 
  857551.9  1283936.8  1591240.6  1112374.7  1104836.2  1990082.5  2286930.2 
        36         37         38         39         40         41         42 
 1050671.7   670978.8   385308.3   617220.9   947210.5  1523069.4  1590208.7 
        43         44         45         46         47         48         49 
 1152166.4   874268.3   856786.7  1501912.2   812992.3  1433944.5  1169689.9 
        50         51         52         53         54         55         56 
  761120.5   655665.9   737223.4   623412.9   541717.9  1239529.1  1182383.1 
        57         58         59         60         61         62         63 
 1401808.7   628116.7   507950.3  2747396.1   539581.5  1055087.5  3550349.5 
        64         65         66         67         68         69         70 
  935872.0  1410581.5  5799225.5  4578344.7  2308627.1  5785802.2  8756920.8 
        71         72         73         74         75         76         77 
  936486.7   859620.4   940655.3   461623.9   848543.7  2309804.2  1241075.8 
        78         79         80         81         82         83         84 
  456956.7   723527.6   395900.6   692132.4  6173798.8   936641.2  6561521.0 
        85         86         87         88         89         90         91 
 3007107.9  4707504.1  1821147.0  1274546.0  1539352.9 10076301.8  1887415.3 
        92         93         94         95         96         97         98 
 1941222.6  3696158.0  6802400.4  1055932.4 23101792.2  1334995.9  1869797.5 
        99        100        101        102        103        104        105 
 3712233.4  1116260.1  4223297.1  4854943.6  1385925.9  1748553.8  2053107.4 
       106        107        108        109        110        111        112 
 1458847.1  2051602.9   643613.7  5267349.8  3902378.1  1836245.8  2455677.3 
       113        114        115        116        117        118        119 
 1624723.3  1560690.4   953841.4   710120.9  1658775.2  1321024.4  1312615.0 
       120        121        122        123        124        125        126 
 2743290.7  1054216.7  1320798.9  1262051.7  2844557.5  2947324.2   407556.6 
       127        128        129        130        131        132        133 
  825951.6  1757610.8 17344690.0  1679538.3  2161094.8  5913745.0  1058384.3 
       134        135        136        137        138        139        140 
 7738514.2   561868.8  1386779.3  7276857.5  1834723.0   556354.7  2416013.3 

13 Infos sur le sujet | ROADMAP

\[ Q = f(QCAP, QLAB, QMAT)\\ \]

il y a aussi les infos sur \(C(Q)\)

Propriété de la CD => si la fonction de prod est cobb douglas, alors la fonction de coût l’est aussi.

alpha y => mesure des rendements d’échelle…

DEUX CHOSES ESSENTIELLES

  • Il faut estimer les substitutions entre facteurs
  • Les rendements d’échelle

Dans la cobb douglas les substitutions entre facteurs il est constant et c’est 1.

Regarder le \(\prod\)

13.1 Notes sur la translog Cost

On pourrait tt à fait estimer le système d’équations suivant :

Voir aussi la slide 78 sur la fonction \(\ln C\)

\[ \begin{cases} S_1 = \alpha_1 + \sum^3_{i=1} \beta_{1j}\ln p_j + \beta_{1y}\ln y\\ S_2 = \alpha_2 + \sum^3_{i=1} \beta_{2j}\ln p_j + \beta_{2y}\ln y\\ S_3 = \alpha_3 + \sum^3_{i=1} \beta_{3j}\ln p_j + \beta_{3y}\ln y \end{cases} \]

Inconvénients dans la translog et des formes flexibles :

Le nombre de paramètres explose à cause des effets croisés et risque important de collinéarité.

Quand on passe au système au tableau, on a augmenté à 3*140 données (420 observations) et on a un peu moins de paramètres

done 💅

Les références

Ivaldi, Marc, Norbert Ladoux, Hervé Ossard, et Michel Simioni. 1996. « Comparing Fourier and translog specifications of multiproduct technology: Evidence from an incomplete panel of French farmers ». Journal of applied econometrics 11 (6): 649‑67.
Wickham, Hadley. 2014. « Tidy Data ». Journal of Statistical Software.

Réutilisation